home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / debugtx.arc / 06TABLE.DOC < prev    next >
Encoding:
Text File  |  1991-08-11  |  24.7 KB  |  394 lines

  1.                                                            6-7
  2.  
  3. WARNING: Instruction forms marked with "*" by the mnemonic are 
  4.     part of the extended 186/286/NEC instruction set.  
  5.     Instructions marked with "#" are unique to the NEC 
  6.     processors.  These instructions will NOT work on the 8088 of 
  7.     the IBM-PC; nor will they work on the 8086; nor will the NEC 
  8.     instructions work on the 186 or 286. If you wish your 
  9.     programs to run on all PC's, do not use these instructions!  
  10.  
  11. Opcodes    Instruction    Description
  12. -------    -----------    -----------
  13. 37          AAA           ASCII adjust AL (carry into AH) after addition
  14. D5 0A       AAD           ASCII adjust before division (AX = 10*AH + AL)
  15. D4 0A       AAM           ASCII adjust after multiply (AL/10: AH=Quo AL=Rem)
  16. 3F          AAS           ASCII adjust AL (borrow from AH) after subtraction
  17. 14 ib       ADC AL,ib     Add with carry immediate byte into AL
  18. 15 iw       ADC AX,iw     Add with carry immediate word into AX
  19. 80 /2 ib    ADC eb,ib     Add with carry immediate byte into EA byte
  20. 10 /r       ADC eb,rb     Add with carry byte register into EA byte
  21. 83 /2 ib    ADC ew,ib     Add with carry immediate byte into EA word
  22. 81 /2 iw    ADC ew,iw     Add with carry immediate word into EA word
  23. 11 /r       ADC ew,rw     Add with carry word register into EA word
  24. 12 /r       ADC rb,eb     Add with carry EA byte into byte register
  25. 13 /r       ADC rw,ew     Add with carry EA word into word register
  26. 04 ib       ADD AL,ib     Add immediate byte into AL
  27. 05 iw       ADD AX,iw     Add immediate word into AX
  28. 80 /0 ib    ADD eb,ib     Add immediate byte into EA byte
  29. 00 /r       ADD eb,rb     Add byte register into EA byte
  30. 83 /0 ib    ADD ew,ib     Add immediate byte into EA word
  31. 81 /0 iw    ADD ew,iw     Add immediate word into EA word
  32. 01 /r       ADD ew,rw     Add word register into EA word
  33. 02 /r       ADD rb,eb     Add EA byte into byte register
  34. 03 /r       ADD rw,ew     Add EA word into word register
  35. 0F 20      #ADD4S         Add CL nibbles BCD from DS:SI into ES:DI (CL even,NZ)
  36. 24 ib       AND AL,ib     Logical-AND immediate byte into AL
  37. 25 iw       AND AX,iw     Logical-AND immediate word into AX
  38. 80 /4 ib    AND eb,ib     Logical-AND immediate byte into EA byte
  39. 20 /r       AND eb,rb     Logical-AND byte register into EA byte
  40. 81 /4 iw    AND ew,iw     Logical-AND immediate word into EA word
  41. 21 /r       AND ew,rw     Logical-AND word register into EA word
  42. 22 /r       AND rb,eb     Logical-AND EA byte into byte register
  43. 23 /r       AND rw,ew     Logical-AND EA word into word register
  44. 63 /r      *ARPL ew,rw    Adjust RPL of EA word not smaller than RPL of rw
  45. 62 /r      *BOUND rw,md   INT 5 if rw not between [md] and [md+2] inclusive
  46. 9A cd       CALL cd       Call far segment, immediate 4-byte address
  47. E8 cw       CALL cw       Call near, offset relative to next instruction
  48. FF /3       CALL ed       Call far segment, address at EA doubleword
  49. FF /2       CALL ew       Call near, offset absolute at EA word
  50. 0F FF ib   #CALL80 ib     Call 8080-emulation code at INT number ib
  51. 98          CBW           Convert byte into word (AH = top bit of AL)
  52. F8          CLC           Clear carry flag
  53. FC          CLD           Clear direction flag so SI and DI will increment
  54. FA          CLI           Clear interrupt enable flag; interrupts disabled
  55. 0F 12/0    #CLRBIT eb,CL  Clear bit CL of eb
  56. 0F 13/0    #CLRBIT ew,CL  Clear bit CL of ew
  57. 0F 1A/0 ib #CLRBIT eb,ib  Clear bit ib of eb
  58. 0F 1B/0 ib #CLRBIT ew,ib  Clear bit ib of ew
  59.                                                           6-8
  60.  
  61. 0F 06      *CLTS          Clear task switched flag
  62. F5          CMC           Complement carry flag
  63. 3C ib       CMP AL,ib     Subtract immediate byte from AL for flags only
  64. 3D iw       CMP AX,iw     Subtract immediate word from AX for flags only
  65. 80 /7 ib    CMP eb,ib     Subtract immediate byte from EA byte for flags only
  66. 38 /r       CMP eb,rb     Subtract byte register from EA byte for flags only
  67. 83 /7 ib    CMP ew,ib     Subtract immediate byte from EA word for flags only
  68. 81 /7 iw    CMP ew,iw     Subtract immediate word from EA word for flags only
  69. 39 /r       CMP ew,rw     Subtract word register from EA word for flags only
  70. 3A /r       CMP rb,eb     Subtract EA byte from byte register for flags only
  71. 3B /r       CMP rw,ew     Subtract EA word from word register for flags only
  72. 0F 26      #CMP4S         Compare CL nibbles CD at DS:SI from ES:DI (CL even,NZ)
  73. A6          CMPS mb,mb    Compare bytes ES:[DI] from [SI], advance SI and DI
  74. A7          CMPS mw,mw    Compare words ES:[DI] from [SI], advance SI and DI
  75. A6          CMPSB         Compare bytes ES:[DI] from DS:[SI], advance SI and DI
  76. A7          CMPSW         Compare words ES:[DI] from DS:[SI], advance SI and DI
  77. 99          CWD           Convert word to doubleword (DX = top bit of AX)
  78. 27          DAA           Decimal adjust AL after addition
  79. 2F          DAS           Decimal adjust AL after subtraction
  80. FE /1       DEC eb        Decrement EA byte by 1
  81. FF /1       DEC ew        Decrement EA word by 1
  82. 48+rw       DEC rw        Decrement word register by 1
  83. F6 /6       DIV eb        Unsigned divide AX by EA byte (AL=Quo AH=Rem)
  84. F7 /6       DIV ew        Unsigned divide DXAX by EA word (AX=Quo DX=Rem)
  85. C8 iw 00   *ENTER iw,0    Make stack frame, iw bytes local storage, 0 levels
  86. C8 iw 01   *ENTER iw,1    Make stack frame, iw bytes local storage, 1 level
  87. C8 iw ib   *ENTER iw,ib   Make stack frame, iw bytes local storage, ib levels
  88.             Fany          Floating point set is in Chapter 7
  89. F4          HLT           Halt
  90. F6 /7       IDIV eb       Signed divide AX by EA byte (AL=Quo AH=Rem)
  91. F7 /7       IDIV ew       Signed divide DXAX by EA word (AX=Quo DX=Rem)
  92. F6 /5       IMUL eb       Signed multiply (AX = AL * EA byte)
  93. F7 /5       IMUL ew       Signed multiply (DXAX = AX * EA word)
  94. 6B /r ib   *IMUL rw,ib    Signed multiply immediate byte into word register
  95. 69 /r iw   *IMUL rw,iw    Signed multiply immediate word into word register
  96. 69 /r iw   *IMUL rw,ew,iw Signed multiply (rw = EA word * immediate word)
  97. 6B /r ib   *IMUL rw,ew,ib Signed multiply (rw = EA word * immediate byte)
  98. E4 ib       IN AL,ib      Input byte from immediate port into AL
  99. EC          IN AL,DX      Input byte from port DX into AL
  100. E5 ib       IN AX,ib      Input word from immediate port into AX
  101. ED          IN AX,DX      Input word from port DX into AX
  102. FE /0       INC eb        Increment EA byte by 1
  103. FF /0       INC ew        Increment EA word by 1
  104. 40+rw       INC rw        Increment word register by 1
  105. 6C         *INS eb,DX     Input byte from port DX into [DI]
  106. 6D         *INS ew,DX     Input word from port DX into [DI]
  107. 6C         *INSB          Input byte from port DX into ES:[DI]
  108. 6D         *INSW          Input word from port DX into ES:[DI]
  109. CC          INT 3         Interrupt 3 (trap to debugger) (far call, with flags
  110. CD ib       INT ib        Interrupt numbered by immediate byte     pushed first)
  111. CE          INTO          Interrupt 4 if overflow flag is 1
  112. CF          IRET          Interrupt return (far return and pop flags)
  113.                                                           6-9
  114.  
  115. 77 cb       JA cb         Jump short if above (CF=0 and ZF=0)    above=UNSIGNED
  116. 73 cb       JAE cb        Jump short if above or equal (CF=0)
  117. 72 cb       JB cb         Jump short if below (CF=1)             below=UNSIGNED
  118. 76 cb       JBE cb        Jump short if below or equal (CF=1 or ZF=1)
  119. 72 cb       JC cb         Jump short if carry (CF=1)
  120. E3 cb       JCXZ cb       Jump short if CX register is zero
  121. 74 cb       JE cb         Jump short if equal (ZF=1)
  122. 7F cb       JG cb         Jump short if greater (ZF=0 and SF=OF)  greater=SIGNED
  123. 7D cb       JGE cb        Jump short if greater or equal (SF=OF)
  124. 7C cb       JL cb         Jump short if less (SF/=OF)                less=SIGNED
  125. 7E cb       JLE cb        Jump short if less or equal (ZF=1 or SF/=OF)
  126. EB cb       JMP cb        Jump short (signed byte relative to next instruction)
  127. EA cd       JMP cd        Jump far (4-byte immediate address)
  128. E9 cw       JMP cw        Jump near (word offset relative to next instruction)
  129. FF /4       JMP ew        Jump near to EA word (absolute offset)
  130. FF /5       JMP md        Jump far (4-byte address in memory doubleword)
  131. 76 cb       JNA cb        Jump short if not above (CF=1 or ZF=1)
  132. 72 cb       JNAE cb       Jump short if not above or equal (CF=1)
  133. 73 cb       JNB cb        Jump short if not below (CF=0)
  134. 77 cb       JNBE cb       Jump short if not below or equal (CF=0 and ZF=0)
  135. 73 cb       JNC cb        Jump short if not carry (CF=0)
  136. 75 cb       JNE cb        Jump short if not equal (ZF=0)
  137. 7E cb       JNG cb        Jump short if not greater (ZF=1 or SF/=OF)
  138. 7C cb       JNGE cb       Jump short if not greater or equal (SF/=OF)
  139. 7D cb       JNL cb        Jump short if not less (SF=OF)
  140. 7F cb       JNLE cb       Jump short if not less or equal (ZF=0 and SF=OF)
  141. 71 cb       JNO cb        Jump short if not overflow (OF=0)
  142. 7B cb       JNP cb        Jump short if not parity (PF=0)
  143. 79 cb       JNS cb        Jump short if not sign (SF=0)
  144. 75 cb       JNZ cb        Jump short if not zero (ZF=0)
  145. 70 cb       JO cb         Jump short if overflow (OF=1)
  146. 7A cb       JP cb         Jump short if parity (PF=1)
  147. 7A cb       JPE cb        Jump short if parity even (PF=1)
  148. 7B cb       JPO cb        Jump short if parity odd (PF=0)
  149. 78 cb       JS cb         Jump short if sign (SF=1)
  150. 74 cb       JZ cb         Jump short if zero (ZF=1)
  151. 9F          LAHF          Load: AH = flags  SF ZF xx AF xx PF xx CF
  152. 0F 02 /r   *LAR rw,ew     Load: high(rw) = Access Rights byte, selector ew
  153. C5 /r       LDS rw,ed     Load EA doubleword into DS and word register
  154. 8D /r       LEA rw,m      Calculate EA offset given by M, place in rw
  155. C9         *LEAVE         Set SP to BP, then POP BP (reverses previous ENTER)
  156. C4 /r       LES rw,ed     Load EA doubleword into ES and word register
  157. 0F 01 /2   *LGDT m        Load 6 bytes at m into Global Descriptor Table reg
  158. 0F 01 /3   *LIDT m        Load 6 bytes at m into Interrupt Descriptor Table reg
  159. 0F 00 /2   *LLDT ew       Load selector ew into Local Descriptor Table reg
  160. 0F 01 /6   *LMSW ew       Load EA word into Machine Status Word
  161. F0          LOCK (prefix) Assert BUSLOCK signal for the next instruction
  162. 0F 33/r    #LODBITS rb,rb Load AX with DS:SI,bit rb (incr. SI,rb), rb+1 bits
  163. 0F 3B/0 ib #LODBITS rb,ib Load AX with DS:SI,bit rb (incr. SI,rb), ib+1 bits
  164. AC          LODS mb       Load byte [SI] into AL, advance SI
  165. AD          LODS mw       Load byte [SI] into AL, advance SI
  166. AC          LODSB         Load byte [SI] into AL, advance SI
  167. AD          LODSW         Load byte [SI] into AL, advance SI
  168.                                                           6-10
  169.  
  170. E2 cb       LOOP cb       noflags DEC CX; jump short if CX/=0
  171. E1 cb       LOOPE cb      noflags DEC CX; jump short if CX/=0 and equal (ZF=1)
  172. E0 cb       LOOPNE cb     noflags DEC CX; jump short if CX/=0 and not equal
  173. E0 cb       LOOPNZ cb     noflags DEC CX; jump short if CX/=0 and ZF=0
  174. E1 cb       LOOPZ cb      noflags DEC CX; jump short if CX/=0 and zero (ZF=1)
  175. 0F 03 /r   *LSL rw,ew     Load: rw = Segment Limit, selector ew
  176. 0F 00 /3   *LTR ew        Load EA word into Task Register
  177. A0 iw       MOV AL,xb     Move byte variable (offset iw) into AL
  178. A1 iw       MOV AX,xw     Move word variable (offset iw) into AX
  179. 8E /3       MOV DS,mw     Move memory word into DS
  180. 8E /3       MOV DS,rw     Move word register into DS
  181. C6 /0 ib    MOV eb,ib     Move immediate byte into EA byte
  182. 88 /r       MOV eb,rb     Move byte register into EA byte
  183. 8E /0       MOV ES,mw     Move memory word into ES
  184. 8E /0       MOV ES,rw     Move word register into ES
  185. 8C /1       MOV ew,CS     Move CS into EA word
  186. 8C /3       MOV ew,DS     Move DS into EA word
  187. C7 /0 iw    MOV ew,iw     Move immediate word into EA word
  188. 8C /0       MOV ew,ES     Move ES into EA word
  189. 89 /r       MOV ew,rw     Move word register into EA word
  190. 8C /2       MOV ew,SS     Move SS into EA word
  191. B0+rb ib    MOV rb,ib     Move immediate byte into byte register
  192. 8A /r       MOV rb,eb     Move EA byte into byte register
  193. B8+rw iw    MOV rw,iw     Move immediate word into word register
  194. 8B /r       MOV rw,ew     Move EA word into word register
  195. 8E /2       MOV SS,mw     Move memory word into SS
  196. 8E /2       MOV SS,rw     Move word register into SS
  197. A2 iw       MOV xb,AL     Move AL into byte variable (offset iw)
  198. A3 iw       MOV xw,AX     Move AX into word register (offset iw)
  199. A4          MOVS mb,mb    Move byte [SI] to ES:[DI], advance SI and DI
  200. A5          MOVS mw,mw    Move word [SI] to ES:[DI], advance SI and DI
  201. A4          MOVSB         Move byte DS:[SI] to ES:[DI], advance SI and DI
  202. A5          MOVSW         Move word DS:[SI] to ES:[DI], advance SI and DI
  203. F6 /4       MUL eb        Unsigned multiply (AX = AL * EA byte)
  204. F7 /4       MUL ew        Unsigned multiply (DXAX = AX * EA word)
  205. F6 /3       NEG eb        Two's complement negate EA byte
  206. F7 /3       NEG ew        Two's complement negate EA word
  207.             NIL (prefix)  Special "do-nothing" opcode assembles no code
  208. 90          NOP           No Operation
  209. F6 /2       NOT eb        Reverse each bit of EA byte
  210. F7 /2       NOT ew        Reverse each bit of EA word
  211. 0F 16/0    #NOTBIT eb,CL  Complement bit CL of eb
  212. 0F 17/0    #NOTBIT ew,CL  Complement bit CL of ew
  213. 0F 1E/0 ib #NOTBIT eb,ib  Complement bit ib of eb
  214. 0F 1F/0 ib #NOTBIT ew,ib  Complement bit ib of ew
  215. 0C ib       OR AL,ib      Logical-OR immediate byte into AL
  216. 0D iw       OR AX,iw      Logical-OR immediate word into AX
  217. 80 /1 ib    OR eb,ib      Logical-OR immediate byte into EA byte
  218. 08 /r       OR eb,rb      Logical-OR byte register into EA byte
  219. 81 /1 iw    OR ew,iw      Logical-OR immediate word into EA word
  220. 09 /r       OR ew,rw      Logical-OR word register into EA word
  221. 0A /r       OR rb,eb      Logical-OR EA byte into byte register
  222. 0B /r       OR rw,ew      Logical-OR EA word into word register
  223.                                                           6-11
  224.  
  225. E6 ib       OUT ib,AL     Output byte AL to immediate port number ib
  226. E7 ib       OUT ib,AX     Output word AX to immediate port number ib
  227. EE          OUT DX,AL     Output byte AL to port number DX
  228. EF          OUT DX,AX     Output word AX to port number DX
  229. 6E         *OUTS DX,eb    Output byte [SI] to port number DX, advance SI
  230. 6F         *OUTS DX,ew    Output word [SI] to port number DX, advance SI
  231. 6E         *OUTSB         Output byte DS:[SI] to port number DX, advance SI
  232. 6F         *OUTSW         Output word DS:[SI] to port number DX, advance SI
  233. 1F          POP DS        Set DS to top of stack, increment SP by 2
  234. 07          POP ES        Set ES to top of stack, increment SP by 2
  235. 8F /0       POP mw        Set memory word to top of stack, increment SP by 2
  236. 58+rw       POP rw        Set word register to top of stack, increment SP by 2
  237. 17          POP SS        Set SS to top of stack, increment SP by 2
  238. 61         *POPA          Pop DI,SI,BP,SP,BX,DX,CX,AX (SP value is ignored)
  239. 9D          POPF          Set flags register to top of stack, increment SP by 2
  240. 0E          PUSH CS       Set [SP-2] to CS, then decrement SP by 2
  241. 1E          PUSH DS       Set [SP-2] to DS, then decrement SP by 2
  242. 06          PUSH ES       Set [SP-2] to ES, then decrement SP by 2
  243. 6A ib      *PUSH ib       Push sign-extended immediate byte
  244. 68 iw      *PUSH iw       Set [SP-2] to immediate word, then decrement SP by 2
  245. FF /6       PUSH mw       Set [SP-2] to memory word, then decrement SP by 2
  246. 50+rw       PUSH rw       Set [SP-2] to word register, then decrement SP by 2
  247. 16          PUSH SS       Set [SP-2] to SS, then decrement SP by 2
  248. 60         *PUSHA         Push AX,CX,DX,BX,original SP,BP,SI,DI
  249. 9C          PUSHF         Set [SP-2] to flags register, then decrement SP by 2
  250. D0 /2       RCL eb,1      Rotate 9-bit quantity (CF, EA byte) left once
  251. D2 /2       RCL eb,CL     Rotate 9-bit quantity (CF, EA byte) left CL times
  252. C0 /2 ib   *RCL eb,ib     Rotate 9-bit quantity (CF, EA byte) left ib times
  253. D1 /2       RCL ew,1      Rotate 17-bit quantity (CF, EA word) left once
  254. D3 /2       RCL ew,CL     Rotate 17-bit quantity (CF, EA word) left CL times
  255. C1 /2 ib   *RCL ew,ib     Rotate 17-bit quantity (CF, EA word) left ib times
  256. D0 /3       RCR eb,1      Rotate 9-bit quantity (CF, EA byte) right once
  257. D2 /3       RCR eb,CL     Rotate 9-bit quantity (CF, EA byte) right CL times
  258. C0 /3 ib   *RCR eb,ib     Rotate 9-bit quantity (CF, EA byte) right ib times
  259. D1 /3       RCR ew,1      Rotate 17-bit quantity (CF, EA word) right once
  260. D3 /3       RCR ew,CL     Rotate 17-bit quantity (CF, EA word) right CL times
  261. C1 /3 ib   *RCR ew,ib     Rotate 17-bit quantity (CF, EA word) right ib times
  262. F3          REP (prefix)  Repeat following MOVS,LODS,STOS,INS, or OUTS CX times
  263. 65         #REPC (prefix) Repeat following CMPS or SCAS CX times or until CF=0
  264. F3          REPE (prefix) Repeat following CMPS or SCAS CX times or until ZF=0
  265. 64         #REPNC (prefix)Repeat following CMPS or SCAS CX times or until CF=1
  266. F2          REPNE (prefix)Repeat following CMPS or SCAS CX times or until ZF=1
  267. F2          REPNZ (prefix)Repeat following CMPS or SCAS CX times or until ZF=0
  268. F3          REPZ (prefix) Repeat following CMPS or SCAS CX times or until ZF=1
  269. CB          RETF          Return to far caller (pop offset, then seg)
  270. C3          RET           Return to near caller (pop offset only)
  271. CA iw       RETF iw       RET (far), pop offset, seg, iw bytes
  272. C2 iw       RET iw        RET (near), pop offset, iw bytes pushed before Call
  273.                                                           6-12
  274.  
  275. D0 /0       ROL eb,1      Rotate 8-bit EA byte left once
  276. D2 /0       ROL eb,CL     Rotate 8-bit EA byte left CL times
  277. C0 /0 ib   *ROL eb,ib     Rotate 8-bit EA byte left ib times
  278. D1 /0       ROL ew,1      Rotate 16-bit EA word left once
  279. D3 /0       ROL ew,CL     Rotate 16-bit EA word left CL times
  280. C1 /0 ib   *ROL ew,ib     Rotate 16-bit EA word left ib times
  281. 0F 28/0    #ROL4 eb       Rotate nibbles: Heb=Leb   HAL,Leb=LAL  LAL=Heb
  282. D0 /1       ROR eb,1      Rotate 8-bit EA byte right once
  283. D2 /1       ROR eb,CL     Rotate 8-bit EA byte right CL times
  284. C0 /1 ib   *ROR eb,ib     Rotate 8-bit EA byte right ib times
  285. D1 /1       ROR ew,1      Rotate 16-bit EA word right once
  286. D3 /1       ROR ew,CL     Rotate 16-bit EA word right CL times
  287. C1 /1 ib   *ROR ew,ib     Rotate 16-bit EA word right ib times
  288. 0F 2A/0    #ROR4 eb       Rotate nibbles: Leb=Heb   Heb=LAL  AL=eb
  289. 9E          SAHF          Store AH into flags  SF ZF xx AF xx PF xx CF
  290. D0 /4       SAL eb,1      Multiply EA byte by 2, once
  291. D2 /4       SAL eb,CL     Multiply EA byte by 2, CL times
  292. C0 /4 ib   *SAL eb,ib     Multiply EA byte by 2, ib times
  293. D1 /4       SAL ew,1      Multiply EA word by 2, once
  294. D3 /4       SAL ew,CL     Multiply EA word by 2, CL times
  295. C1 /4 ib   *SAL ew,ib     Multiply EA word by 2, ib times
  296. D0 /7       SAR eb,1      Signed divide EA byte by 2, once
  297. D2 /7       SAR eb,CL     Signed divide EA byte by 2, CL times
  298. C0 /7 ib   *SAR eb,ib     Signed divide EA byte by 2, ib times
  299. D1 /7       SAR ew,1      Signed divide EA word by 2, once
  300. D3 /7       SAR ew,CL     Signed divide EA word by 2, CL times
  301. C1 /7 ib   *SAR ew,ib     Signed divide EA word by 2, ib times
  302. 1C ib       SBB AL,ib     Subtract with borrow immediate byte from AL
  303. 1D iw       SBB AX,iw     Subtract with borrow immediate word from AX
  304. 80 /3 ib    SBB eb,ib     Subtract with borrow immediate byte from EA byte
  305. 18 /r       SBB eb,rb     Subtract with borrow byte register from EA byte
  306. 83 /3 ib    SBB ew,ib     Subtract with borrow immediate byte from EA word
  307. 81 /3 iw    SBB ew,iw     Subtract with borrow immediate word from EA word
  308. 19 /r       SBB ew,rw     Subtract with borrow word register from EA word
  309. 1A /r       SBB rb,eb     Subtract with borrow EA byte from byte register
  310. 1B /r       SBB rw,ew     Subtract with borrow EA word from word register
  311. AE          SCAS mb       Compare bytes AL - ES:[DI], advance DI
  312. AF          SCAS mw       Compare words AL - ES:[DI], advance DI
  313. AE          SCASB         Compare bytes AX - ES:[DI], advance DI
  314. AF          SCASW         Compare words AX - ES:[DI], advance DI
  315. 0F 14/0    #SETBIT eb,CL  Set bit CL of eb
  316. 0F 15/0    #SETBIT ew,CL  Set bit CL of ew
  317. 0F 1C/0 ib #SETBIT eb,ib  Set bit ib of eb
  318. 0F 1D/0 ib #SETBIT ew,ib  Set bit ib of ew
  319. 0F 01 /0   *SGDT m        Store 6-byte Global Descriptor Table register to M
  320. D0 /4       SHL eb,1      Multiply EA byte by 2, once
  321. D2 /4       SHL eb,CL     Multiply EA byte by 2, CL times
  322. C0 /4 ib   *SHL eb,ib     Multiply EA byte by 2, ib times
  323. D1 /4       SHL ew,1      Multiply EA word by 2, once
  324. D3 /4       SHL ew,CL     Multiply EA word by 2, CL times
  325. C1 /4 ib   *SHL ew,ib     Multiply EA word by 2, ib times
  326.                                                           6-13
  327.  
  328. D0 /5       SHR eb,1      Unsigned divide EA byte by 2, once
  329. D2 /5       SHR eb,CL     Unsigned divide EA byte by 2, CL times
  330. C0 /5 ib   *SHR eb,ib     Unsigned divide EA byte by 2, ib times
  331. D1 /5       SHR ew,1      Unsigned divide EA word by 2, once
  332. D3 /5       SHR ew,CL     Unsigned divide EA word by 2, CL times
  333. C1 /5 ib   *SHR ew,ib     Unsigned divide EA word by 2, ib times
  334. 0F 01 /1   *SIDT m        Store 6-byte Interrupt Descriptor Table register to M
  335. 0F 00 /0   *SLDT ew       Store Local Descriptor Table register to EA word
  336. 0F 01 /4   *SMSW ew       Store Machine Status Word to EA word
  337. F9          STC           Set carry flag
  338. FD          STD           Set direction flag so SI and DI will decrement
  339. FB          STI           Set interrupt enable flag, interrupts enabled
  340. 0F 31/r    #STOBITS rb,rb Store AX to ES:DI,bit rb (incr. DI,rb), rb+1 bits
  341. 0F 39/0 ib #STOBITS rb,ib Store AX to ES:DI,bit rb (incr. DI,rb), ib+1 bits
  342. AA          STOS mb       Store AL to byte [DI], advance DI
  343. AB          STOS mw       Store AX to word [DI], advance DI
  344. AA          STOSB         Store AL to byte ES:[DI], advance DI
  345. AB          STOSW         Store AX to word ES:[DI], advance DI
  346. 0F 00 /1   *STR ew        Store Task Register to EA word
  347. 2C ib       SUB AL,ib     Subtract immediate byte from AL
  348. 2D iw       SUB AX,iw     Subtract immediate word from AX
  349. 80 /5 ib    SUB eb,ib     Subtract immediate byte from EA byte
  350. 28 /r       SUB eb,rb     Subtract byte register from EA byte
  351. 83 /5 ib    SUB ew,ib     Subtract immediate byte from EA word
  352. 81 /5 iw    SUB ew,iw     Subtract immediate word from EA word
  353. 29 /r       SUB ew,rw     Subtract word register from EA word
  354. 2A /r       SUB rb,eb     Subtract EA byte from byte register
  355. 2B /r       SUB rw,ew     Subtract EA word from word register
  356. 0F 22      #SUB4S         Sub CL nibbles BCD at DS:SI from ES:DI (CL even,NZ)
  357. A8 ib       TEST AL,ib    AND immediate byte into AL for flags only
  358. A9 iw       TEST AX,iw    AND immediate word into AX for flags only
  359. F6 /0 ib    TEST eb,ib    AND immediate byte into EA byte for flags only
  360. 84 /r       TEST eb,rb    AND byte register into EA byte for flags only
  361. F7 /0 iw    TEST ew,iw    AND immediate word into EA word for flags only
  362. 85 /r       TEST ew,rw    AND word register into EA word for flags only
  363. 84 /r       TEST rb,eb    AND EA byte into byte register for flags only
  364. 85 /r       TEST rw,ew    AND EA word into word register for flags only
  365. 0F 10/0    #TESTBIT eb,CL Test bit CL of eb, set Z flag
  366. 0F 11/0    #TESTBIT ew,CL Test bit CL of ew, set Z flag
  367. 0F 18/0 ib #TESTBIT eb,ib Test bit ib of eb, set Z flag
  368. 0F 19/0 ib #TESTBIT ew,ib Test bit ib of ew, set Z flag
  369. 9B          WAIT          Wait until BUSY pin is inactive (HIGH)
  370. 0F 00 /4   *VERR ew       Set ZF=1 if segment can be read, selector ew
  371. 0F 00 /5   *VERW ew       Set ZF=1 if segment can be written to, selector ew
  372.                                                           6-14
  373.  
  374. 9r          XCHG AX,rw    Exchange word register with AX
  375. 86 /r       XCHG eb,rb    Exchange byte register with EA byte
  376. 87 /r       XCHG ew,rw    Exchange word register with EA word
  377. 86 /r       XCHG rb,eb    Exchange EA byte with byte register
  378. 9r          XCHG rw,AX    Exchange  with word register
  379. 87 /r       XCHG rw,ew    Exchange EA word with word register
  380. D7          XLAT mb       Set AL to memory byte [BX + unsigned AL]
  381. D7          XLATB         Set AL to memory byte DS:[BX + unsigned AL]
  382. 34 ib       XOR AL,ib     Exclusive-OR immediate byte into AL
  383. 35 iw       XOR AX,iw     Exclusive-OR immediate word into AX
  384. 80 /6 ib    XOR eb,ib     Exclusive-OR immediate byte into EA byte
  385. 30 /r       XOR eb,rb     Exclusive-OR byte register into EA byte
  386. 81 /6 iw    XOR ew,iw     Exclusive-OR immediate word into EA word
  387. 31 /r       XOR ew,rw     Exclusive-OR word register into EA word
  388. 32 /r       XOR rb,eb     Exclusive-OR EA byte into byte register
  389. 33 /r       XOR rw,ew     Exclusive-OR EA word into word register
  390.  
  391. * Starred forms will not execute on 8086/8088!  See note at top of chart.
  392. # These instructions work only on NEC chips!  See note at top of chart.
  393.  
  394.